1. Field of the Invention
The present invention generally relates to graphic user interfaces (GUIs) for computer programs and, more particularly, to a system for dynamically adding icons to the display screen by an application program in the course of running the application program.
2. Description of the Prior Art
Personal computer (PC) and workstation operating systems (OS) implement a graphical user interface (GUI) which provides an intuitive way to access functions of the operating system. The graphical user interface minimizes keyboard input by a user providing instead input by pointing, typically by means of a mouse controlled cursor. An icon displayed on the screen of the PC or workstation display might represent, for example, an application program, and by placing the cursor over the icon and double clicking the mouse button, the user will cause the program to be loaded. An icon might also represent a file used by an application program, and by placing the cursor over that icon and clicking the mouse button once, the file is selected or opened for use by the program. It is also possible to move files from one directory to another by a "drag-and-drop" operation. This is accomplished by first selecting the icon representing the file and, while maintaining the mouse button depressed, moving the cursor and the icon across the screen to the desired location and then releasing the mouse button.
Examples of operating systems with such a graphical user interface include X-Windows and Motif for the Unix operating system, the System 7 operating system for the Apple Macintosh computer, Microsoft's Windows, and Presentation Manager (PM) for International Business Machines (IBM) Corporation's OS/2 operating system. These are all window-orientated graphical user interfaces which display one or more windows on the screen of the PC or workstation within which various icons may be displayed. For the purposes of this disclosure, IBM's OS/2 operating system is specifically addressed, but it will be understood by those skilled in the art that the principles of the invention can be applied to other GUI operating systems.
The OS/2 container control is one of the most used and most powerful controls available in the Presentation Manager (PM) control set. It is a visual component whose specific purpose is to hold objects. These objects might represent such diverse entities as executable programs, database records, graphic images, or word processing files. The objects in a container may be visually represented by icons, bitmaps, text strings, or various combinations thereof. The view of the container determines what types of combinations are possible.
The icon view, one of the most often used of the five container view types, uses icons or bitmaps with text strings beneath to represent the objects in the container. When a container is initially displayed in the icon view, all records are generally fanned out so that no records will overlap. This is implemented by sending the PM CM.sub.-- ARRANGE message to the container before it is displayed. This message displays records in the container by filling the topmost row until the width of the client area is reached. The container records then wrap to form another row immediately below the filled row. The process is repeated until all of the container records are positioned in rows. For more information on the Presentation Manager of OS/2, the reader is referred to OS/2 2.0 Technical Library Presentation Manager Programming Reference Version 2.0, Volumes I, II and III (1992), IBM Publications Numbers: Volume I--S10G-6264-00; Volume II--S10G6265-00; Volume III--S10G-6272-00.
The problem that the subject invention addresses concerns the placement of records that are dynamically added to an icon view container after it is displayed. These are not records that are added via a user initiated drag/drop operation, but rather records that are dynamically added to the display screen by the application program during the course of running the program and may or may not be in response to some user action.